package com.king.designpatterns.hybriddesignpattern.hybriddesignpattern.observingtheintermediarypatterns;

/**
 * 产品管理类(工厂类)
 *
 * @author king
 * @date 2021-06-15 13:37
 */
public class ProductManager {
    /**
     * 是否可以创建一个产品
     */
    private boolean isPermittedCreate = false;

    /**
     * 建立一个产品
     */
    public Product createProduct(String name){
        // 首先修改权限，允许创建
        isPermittedCreate = true;
        Product product = new Product(this, name);
        // 产生一个创建事件
        new ProductEvent(product, ProductEventType.NEW_PRODUCT);
        return product;
    }

    /**
     * 销毁产品
     */
    public void abandonProduct(Product product){
        // 产生一个删除事件
        new ProductEvent(product, ProductEventType.DEL_PRODUCT);
        product = null;
    }

    /**
     * 修改产品
     */
    public void editProduct(Product product, String name){
        product.setName(name);
        new ProductEvent(product, ProductEventType.EDIT_PRODUCT);
    }

    /**
     * 获取是否可以创建一个产品
     */
    public boolean isCreateProduct() {
        return isPermittedCreate;
    }

    /**
     * 克隆一个产品
     */
    public Product clone(Product product){
        // 产生一个克隆事件
        new ProductEvent(product, ProductEventType.CLONE_PRODUCT);
        return product.clone();
    }
}
